perm filename FLOW.MJW[UP,DOC] blob sn#055751 filedate 1973-07-30 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00002 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	There  is  a  flow-chart  drawing  program.  It is essentially a file
 00009 ENDMK
⊗;
There  is  a  flow-chart  drawing  program.  It is essentially a file
editor.  It reads a text file with a name of the form FLx where x  is
any  digit,  and  writes  the updated version on a new version of the
file (with the same name). The file must be there to start  with,  so
to get started, you must create a null file. This is done most easily
with SOS.
	The  program  is called FLOW and exists as a dump on [1,PMP].
When you start it it types out "TYPE FILE NUMBER =", at  which  point
you  type the digit (no CR is needed). The program reads the file and
displays the first 20 lines on the  screen.  You  are  now  basically
looking  at  a  120  by  20  character array. You may move the cursor
around in that array, and make changes as you wish. Since the  screen
is  not  120  characters  wide,  only  the first part of each line is
shown; there are commands for moving the window left and  right.  You
can  also  move  the text up one line at a time, but the top line get
written out and cannot be retrieved; a new line (from  the  file,  if
any lines left) is inserted at the bottom. DO NOT USE TAB as tabs are
not expanded by the display program.
     A list of the commands follows:
	ε means one or more control bits

         ε(	 MOVE CURSOR LEFT (1,2 OR 4) AND REMEMBER CR POSITION (SEE CR)
         ε)	 MOVE CURSOR RIGHT (1,2 OR 4) AND REMEMBER CR POSITION (SEE CR)
         ε/	 MOVE CURSOR UP (1,2 OR 4) AND REMEMBER CR POSITION (SEE CR)
         ε\	 MOVE CURSOR DOWN (1,2 OR 4) AND REMEMBER CR POSITION (SEE CR)

        <BS>	MOVE CURSOR LEFT AND DO NOT REMEMBER CR POSITION
        <CR>  --         MOVE CURSOR DOWN ONE LINE AND LEFT TO POSITION SET BY  
  <cntrl> ←	MOVE TEXT LEFT 8 CHR. POSITIONS (WINDOWING)
  <cntrl> →	MOVE TEXT RIGHT 8 CHR. POSITIONS (WINDOWING)
  <cntrl> ↑	MOVE TEXT UP (PUT TOP LINE OUT ON FILE)
  <cntrl> P	REMEMBER CURRENT CURSOR POSITION AS UPPER LEFT CORNER OF A BLOCK
  <meta>  P	REMEMBER CURRENT CURSOR POSITION AS LOWER RIGHT CORNER OF A BLOCK
  <meta>  M	GO INTO MOVE MODE MOVING THE CURREN REMEMBERED BLOCK (SEE MOVING) 
  <cntrl> M	GO INTO MOVE MODE MOVING THE BOX YOU ARE INSIDE (SEE MOVING)

<any chr>	Insert the character at the current  cursor  position
                   and  step  cursor  one  place right, except if the
                   chr.  typed was  |  (vert.   bar)  in  which  case
                   cursor  is  stepped  one place down. <CR> and <LF>
                   are not inserted.  This does  not  move  any  text
                   around,  it merely changes the chr. at the current
                   position to the one typed.

  <meta> <space>INSERT A SPACE AT CURRENT POSITION, MOVING TEXT ON THAT LINE TO

  <both> <space>DELETE THE CHR. AT THE CURRENT POSITION, MOVING TEXT ON THAT LINE

  <cntrl> I	INSERT A BLANK LINE AT CURRENT LINE POSITION. MOVE THOSE ABOVE UP
  <cntrl> D	DELETE CURRENT LINE. MOVE THOSE BELOW UP.
  <cntrl> E	END THE EDIT. REST OF FILE IS READ AND WRITTEN AND FILE IS CLOSED
		UP TO THIS POINT, SAYING CALL WILL LEAVE THE ORRIGINAL 
		FILE UNCHANGED.


  MOVING:

A  block  to be moved is always square. It may be delineated by the P
commands, or it may be a box which you are inside. The  box  must  be
made  of  |  and  _  and be of the following form. Note carefully the
corners. No variation of form is allowed.

      ____________________
      | this is a box    |
      | it may have text |
      ____________________

When you are in move mode, only 5 commands are accepted. They are the
moving commands, and space. The moving commands {i.e.  "()/\" }  move
the  block  one  position  in  the indicated direction, regardless of
control bits. Space gets you out of move mode.

      THE CURSOR IS THE _ CHARACTER, IT CAN BE HARD TO FIND.

	Typing  <CNTRL>  <DIGIT>  (for  as  many  digits as you wish)
multiplies the next character typed (other  than  control  digit)  by
that many. So <CNTRL> 2 <CNTRL> 4 <CNTRL> ↑ would move the text up 24
lines.